home *** CD-ROM | disk | FTP | other *** search
/ C++ für Kids / C++ for kids.iso / Buch / Monster6.cpp < prev    next >
C/C++ Source or Header  |  1999-01-21  |  5KB  |  162 lines

  1. //---------------------------------------------------------------------------
  2. #include <vcl\vcl.h>
  3. #pragma hdrstop
  4.  
  5. #include "Monster6.h"
  6. //---------------------------------------------------------------------------
  7. #pragma resource "*.dfm"
  8.  
  9. const String Pfad = "c:\\cpp\\buch\\";
  10.  
  11. class TMonster
  12. {
  13. private:
  14.   String Name;
  15.   String Wesen;
  16.   String Bild;
  17. public:
  18.   virtual void Erscheinen(void);
  19.   virtual String Typ (void) {return "Monster";};
  20.   TMonster (String N, String W, String Datei);
  21.   virtual ~TMonster (void);
  22. };
  23.  
  24. class TGMonster : virtual public TMonster
  25. {
  26. public:
  27.   virtual String Typ (void) {return "GeistesMonster";};
  28.   TGMonster (String N, String W, String Datei);
  29.   virtual ~TGMonster (void);
  30. };
  31.  
  32. class TSMonster : virtual public TMonster
  33. {
  34. public:
  35.   virtual String Typ (void) {return "SeelenMonster";};
  36.   TSMonster (String N, String W, String Datei);
  37.   virtual ~TSMonster (void);
  38. };
  39.  
  40. class TXMonster : public TGMonster, public TSMonster
  41. {
  42. public:
  43.   virtual String Typ (void) {return "PsychoMonster";};
  44.   TXMonster (String N, String W, String Datei);
  45.   virtual ~TXMonster (void);
  46. };
  47.  
  48. //---------------------------------------------------------------------------
  49.  
  50. TMonster *WerWohl;
  51. bool Modus;
  52. int  Zufall;
  53. TForm1 *Form1;
  54.  
  55. //---------------------------------------------------------------------------
  56. __fastcall TForm1::TForm1(TComponent* Owner)
  57.     : TForm(Owner)
  58. {
  59. }
  60. //---------------------------------------------------------------------------
  61. // Monster-Konstruktoren
  62. //---------------------------------------------------------------------------
  63. TMonster::TMonster (String N, String W, String Datei)
  64. {
  65.   Name = N; Wesen = W; Bild = Datei;
  66. }
  67. //---------------------------------------------------------------------------
  68. TGMonster::TGMonster (String N, String W, String Datei)
  69.   : TMonster (N, W, Datei)
  70. {
  71. }
  72. //---------------------------------------------------------------------------
  73. TSMonster::TSMonster (String N, String W, String Datei)
  74.  : TMonster (N, W, Datei)
  75. {
  76. }
  77. //---------------------------------------------------------------------------
  78. TXMonster::TXMonster (String N, String W, String Datei)
  79.  : TGMonster (N, W, Datei), TSMonster (N, W, Datei), TMonster (N, W, Datei)
  80. {
  81. }
  82. //---------------------------------------------------------------------------
  83. // Monster-Destruktoren
  84. //---------------------------------------------------------------------------
  85. TMonster::~TMonster (void)
  86. {
  87.   Form1->Label1->Caption = "";
  88.   Form1->Label2->Caption = "";
  89.   Form1->Label3->Caption = "";
  90.   Form1->Image1->Hide();
  91.   ShowMessage ("Tschⁿ▀!");
  92. }
  93. //---------------------------------------------------------------------------
  94. TGMonster::~TGMonster (void)
  95. {
  96.   // ShowMessage ("Ich denke an Dich!");
  97. }
  98. //---------------------------------------------------------------------------
  99. TSMonster::~TSMonster (void)
  100. {
  101.   // ShowMessage ("Ich vermisse Dich!");
  102. }
  103. //---------------------------------------------------------------------------
  104. TXMonster::~TXMonster (void)
  105. {
  106.   // ShowMessage ("Ich verabschiede mich.");
  107. }
  108. //---------------------------------------------------------------------------
  109. void TMonster::Erscheinen (void)
  110. {
  111.   Form1->Label1->Caption = "Name:    " + Name;
  112.   Form1->Label2->Caption = "Wesen:    " + Wesen;
  113.   Form1->Label3->Caption = "Typ:    " + Typ();
  114.   Form1->Image1->Picture->LoadFromFile (Pfad+Bild);
  115.   Form1->Image1->Show ();
  116. }
  117. //---------------------------------------------------------------------------
  118. void __fastcall TForm1::FormCreate(TObject *Sender)
  119. {
  120.   randomize ();
  121.   Modus = true;
  122. }
  123. //---------------------------------------------------------------------------
  124. void __fastcall TForm1::Button1Click(TObject *Sender)
  125. {
  126.   if (Modus)
  127.   {
  128.     Zufall = random(5);
  129.     switch (Zufall)
  130.     {
  131.       case 0:
  132.         WerWohl =
  133.           new TMonster("Frankie", "ungew÷hnlich", "Frank.bmp");
  134.         break;
  135.       case 1:
  136.         WerWohl =
  137.           new TGMonster("Berti", "nachdenklich", "Albert.bmp");
  138.         break;
  139.       case 2:
  140.         WerWohl =
  141.           new TSMonster("Sigi", "mitfⁿhlend", "Sigmund.bmp");
  142.         break;
  143.       case 3:
  144.         WerWohl =
  145.           new TXMonster("Jekyll", "zaghaft", "Jekyll.bmp");
  146.         break;
  147.       case 4:
  148.         WerWohl =
  149.           new TXMonster("Hyde", "launisch", "Hyde.bmp");
  150.     }
  151.     WerWohl->Erscheinen ();
  152.     Button1->Caption = "Verschwinden";
  153.   }
  154.   else
  155.   {
  156.     delete WerWohl;
  157.     Button1->Caption = "Erscheinen";
  158.   }
  159.   Modus = !Modus;
  160. }
  161. //---------------------------------------------------------------------------
  162.